package agents.persons.independent;

import jade.core.Agent;
import jade.lang.acl.ACLMessage;
import log.Action;
import log.ContadorEventos;

import org.apache.log4j.Logger;

import agents.persons.Person;
import agents.persons.leader.Go2SafePlaceBehaviour;

import com.avanti.routes.ListaCuadrantes;

/**
 * 
 * @author Elena
 * 
 */
public class Go2SafePlaceBehaviourIndependet extends Go2SafePlaceBehaviour {
	/**
	 * 
	 */
	private static final long serialVersionUID = -2515777227396622635L;
	private static Logger logger = Logger.getLogger(IndependentAgent.class);
	private boolean desobedeciendo;

	public Go2SafePlaceBehaviourIndependet(Agent a, long period) {
		super(a, period);
		desobedeciendo = ((IndependentAgent)myAgent).getIdCuadranteMaldito() != -1;
	}

	@Override
	public void comportamientoPropio() {
		// super.comportamientoPropio();
		int cuaMaldito = ((IndependentAgent)myAgent).getIdCuadranteMaldito();
		int cuaDinero = ((IndependentAgent)myAgent).getIdCuadranteDestinoAlternativo();
		
		if (ListaCuadrantes.getInstance().getIdCuadrante(getpActual()) == cuaMaldito) {
			//System.out.println("Cuadrante maltidoDesobedecemos y vamos a por el dinero!!!!");
			desobedeciendo = true;
			setCamCuadrantes(ListaCuadrantes.getInstance().rutaMasCorta(cuaMaldito, cuaDinero));
			setIdCuadranteActual(cuaMaldito);
			calculaCaminoASeguir();
		} else if (desobedeciendo && ListaCuadrantes.getInstance().getIdCuadrante(getpActual()) == cuaDinero) {
			//System.out.println("Cogemos dinero, vamos a la salida!!");
			desobedeciendo = false;
			setCamCuadrantes(ListaCuadrantes.getInstance().rutaMasCorta(ListaCuadrantes.getInstance().getIdCuadrante(getpActual())));
			setIdCuadranteActual(ListaCuadrantes.getInstance().getIdCuadrante(getpActual()));
			calculaCaminoASeguir();
		}
	}

	@Override
	public void trazaEntrar() {
		if (desobedeciendo)
			logger.info(ContadorEventos.addEvent(Integer.toString(getIdCuadranteActual()), Action.DESOBEDECER_ENTRAR_EN, ""));
		else
			super.trazaEntrar();
	}

	@Override
	public void trazaSalir() {
		if (desobedeciendo)
			logger.info(ContadorEventos.addEvent(Integer.toString(getIdCuadranteActual()), Action.DESOBEDECER_SALIR_DE, ""));
		else
			super.trazaSalir();
	}

	public void cambioCuadrante() {

	}
}
